#pragma once

#include "../Core/BaseCamera.h"

class LookAtCamera : public BaseCamera
{
protected:
	Vector3 m_v3Target;
	Vector3 m_v3Up;
	virtual Matrix GetModelMatrix();
public:
	LookAtCamera();
	~LookAtCamera();

	virtual __VOID SetTarget(__FLOAT x, __FLOAT y, __FLOAT z);
	virtual __VOID SetUp(__FLOAT x, __FLOAT y, __FLOAT z);

	virtual __VOID MoveForward(__FLOAT delta);
	virtual __VOID MoveBackward(__FLOAT delta);
	virtual __VOID MoveLeft(__FLOAT delta);
	virtual __VOID MoveRight(__FLOAT delta);

	virtual __VOID RotateUp(__FLOAT angle);
	virtual __VOID RotateDown(__FLOAT angle);
	virtual __VOID RotateLeft(__FLOAT angle);
	virtual __VOID RotateRight(__FLOAT angle);

	virtual Matrix GetProjectionMatrix(){ return m_maProjection; }
	virtual Matrix GetViewMatrix();
};